package com.ruoyi.order.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.web.domain.BaseEntity;

/**
 * 优惠券对象 coupon
 * 
 * @author ruoyi
 * @date 2025-07-09
 */
public class Coupon extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 优惠券ID */
    private Long cId;

    /** 类型ID */
    @Excel(name = "类型ID")
    private Long ctId;

    /** 商家ID */
    @Excel(name = "商家ID")
    private Long mId;

    /** 优惠券名称 */
    @Excel(name = "优惠券名称")
    private String name;

    /** 开始发放时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始发放时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issueStartTime;

    /** 发放结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发放结束时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date issueEndTime;

    /** 开始有效时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "开始有效时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date validStartTime;

    /** 失效截止时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "失效截止时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date validEndTime;

    /** 满价格 */
    @Excel(name = "满价格")
    private BigDecimal fullAmount;

    /** 减价格 */
    @Excel(name = "减价格")
    private BigDecimal discountAmount;

    /** 发放数量 */
    @Excel(name = "发放数量")
    private Long totalQuantity;

    /** 每人限领数量 */
    @Excel(name = "每人限领数量")
    private Long perUserLimit;

    /** 折扣 */
    @Excel(name = "折扣")
    private BigDecimal discountRate;

    /** 优惠券状态：0-未生效，1-已生效，2-已过期 */
    @Excel(name = "优惠券状态：0-未生效，1-已生效，2-已过期")
    private Long status;

    /** 逻辑删除：1-已删除，0-未删除 */
    @Excel(name = "逻辑删除：1-已删除，0-未删除")
    private Long isDeleted;

    public void setcId(Long cId) 
    {
        this.cId = cId;
    }

    public Long getcId() 
    {
        return cId;
    }

    public void setCtId(Long ctId) 
    {
        this.ctId = ctId;
    }

    public Long getCtId() 
    {
        return ctId;
    }

    public void setmId(Long mId) 
    {
        this.mId = mId;
    }

    public Long getmId() 
    {
        return mId;
    }

    public void setName(String name) 
    {
        this.name = name;
    }

    public String getName() 
    {
        return name;
    }

    public void setIssueStartTime(Date issueStartTime) 
    {
        this.issueStartTime = issueStartTime;
    }

    public Date getIssueStartTime() 
    {
        return issueStartTime;
    }

    public void setIssueEndTime(Date issueEndTime) 
    {
        this.issueEndTime = issueEndTime;
    }

    public Date getIssueEndTime() 
    {
        return issueEndTime;
    }

    public void setValidStartTime(Date validStartTime) 
    {
        this.validStartTime = validStartTime;
    }

    public Date getValidStartTime() 
    {
        return validStartTime;
    }

    public void setValidEndTime(Date validEndTime) 
    {
        this.validEndTime = validEndTime;
    }

    public Date getValidEndTime() 
    {
        return validEndTime;
    }

    public void setFullAmount(BigDecimal fullAmount) 
    {
        this.fullAmount = fullAmount;
    }

    public BigDecimal getFullAmount() 
    {
        return fullAmount;
    }

    public void setDiscountAmount(BigDecimal discountAmount) 
    {
        this.discountAmount = discountAmount;
    }

    public BigDecimal getDiscountAmount() 
    {
        return discountAmount;
    }

    public void setTotalQuantity(Long totalQuantity) 
    {
        this.totalQuantity = totalQuantity;
    }

    public Long getTotalQuantity() 
    {
        return totalQuantity;
    }

    public void setPerUserLimit(Long perUserLimit) 
    {
        this.perUserLimit = perUserLimit;
    }

    public Long getPerUserLimit() 
    {
        return perUserLimit;
    }

    public void setDiscountRate(BigDecimal discountRate) 
    {
        this.discountRate = discountRate;
    }

    public BigDecimal getDiscountRate() 
    {
        return discountRate;
    }

    public void setStatus(Long status) 
    {
        this.status = status;
    }

    public Long getStatus() 
    {
        return status;
    }

    public void setIsDeleted(Long isDeleted) 
    {
        this.isDeleted = isDeleted;
    }

    public Long getIsDeleted() 
    {
        return isDeleted;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("cId", getcId())
            .append("ctId", getCtId())
            .append("mId", getmId())
            .append("name", getName())
            .append("issueStartTime", getIssueStartTime())
            .append("issueEndTime", getIssueEndTime())
            .append("validStartTime", getValidStartTime())
            .append("validEndTime", getValidEndTime())
            .append("fullAmount", getFullAmount())
            .append("discountAmount", getDiscountAmount())
            .append("totalQuantity", getTotalQuantity())
            .append("perUserLimit", getPerUserLimit())
            .append("discountRate", getDiscountRate())
            .append("status", getStatus())
            .append("isDeleted", getIsDeleted())
            .toString();
    }
}
